package com.jwmp.rbac.service;

import com.jwmp.core.util.PageResult;
import com.jwmp.core.util.QueryObject;
import com.jwmp.rbac.domain.Department;
import com.jwmp.rbac.domain.Employee;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IDepartmentService {
    /**
     * 添加部门
     * @param dept
     */
    void insert(Department dept);

    /**
     * 根据 id 修改部门
     * @param dept
     */
    void update(Department dept);

    /**
     * 删除部门以及对应的员工绑定
     * @param id
     */
    void updateStatus(Long id,Boolean status);

    /**
     * 查询所有的部门，不包括部门对应的员工
     * @return
     */
    PageResult selectList(QueryObject qo);
    PageResult selectList(QueryObject qo,Boolean status);

    /**
     * 根据 id 查询部门信息，包括权限
     * @param id
     * @return
     */
    Department selectOne(Long id);

    /**
     * 查询部门下的所有员工信息
     * @param deptId
     * @return
     */
    List<Employee> selectExistEmpsByDeptId(Long deptId);

    /**
     * 查询不属于该部门的所有员工
     * @param deptId
     * @return
     */
    List<Employee> selectNotExistEmpsByDeptId(Long deptId);

    /**
     * 根据 部门id 绑定部门员工
     * @param deptId  部门 id
     * @param empIdList 部门员工列表
     */
    void bindEmployee(Long deptId,List<Long> empIdList);

}
